# 密码应用方案代码生成配置
# 模型服务配置
MODEL_NAME = "glm-4-flash-250414"
API_KEY = "3d331c24eb364e04b928403301b130fd.fb6V49R3H57XibRZ"
API_URL = "https://open.bigmodel.cn/api/paas/v4/"

# 系统消息模板
SYSTEM_MESSAGE_TEMPLATES = "你是一名密码测评专家。"

# 文档章节映射
DOC_KEY_EXTRACTION = {
    "KEY": "2.3.1.2",
    "AUTH": "5.4.1",
    "ACCESS_CONTROL": "5.4.2",
    "KEY_DATA_TRANSPORT_CONFIDENTIALITY_AND_INTEGRITY": "5.4.3",
    "KEY_DATA_STORE_CONFIDENTIALITY": "5.4.4",
    "KEY_DATA_STORE_INTEGRITY": "5.4.5",
    "KEY_DATA_SAFE_MARK_INTEGRITY": "5.4.6",
    "NON-REPUDIATION": "5.4.7",
}

# 密码方案内容提取的提示词模版配置
DOC_PROMPT_TEMPLATES = {
    "KEY_INFORMATION":  """
        <指令>

        ## 任务描述
        1. **关键定义**:
            - "信息种类及关键数据类型"的定义:指的是业务应用中通常包括鉴别数据、重要业务数据、重要审计数据、个人敏感信息、密钥数据等关键数据信息需要通过密码手段进行防护。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取信息分类及信息内容列的内容,不得添加任何编造信息;
        3. **输出要求**:
            - 严格按照"信息分类数据 包含 对应的信息内容数据"的格式输出。
            - 每个信息分类单独占一行,行末用";"结束。
            - 信息内容数据需完整、准确,不得遗漏或添加。
        4. **数据验证**:
            - 信息分类数据必须与原文中的"信息分类"列完全一致。
            - 信息内容数据必须与原文中的"信息内容"列完全一致。
            - 若某信息分类下存在多行内容,需合并后按原文顺序列出,用顿号分隔。
        5. **特殊情况处理**:
            - 若表格中存在合并单元格（如"业务数据"包含多行内容）,需合并所有相关行的信息内容。
            - 若章节内容为空或不存在,直接输出"未提取到该章节的内容，请仔细检查章节编号"。
        ## 输出格式
        1. XXXXXX 包含 XXXXXX, XXXXXX, XXXXXX;
        2. XXXXXX 包含 XXXXXX, XXXXXX, XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "AUTH_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            - "身份鉴别"的定义:指的是通过密码算法对访问系统的用户进行身份鉴别的方式。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取具身份鉴别的改造措施、密码算法、对应的系统用户及不具备条件改造的内容,不得添加任何编造信息;
        3. **输出要求**:
            仅输出以下三类信息,请勿包含其他内容:
            - 改造措施：系统为鉴别身份信息实施的密码措施;
            - 密码算法：用于鉴别身份的密码算法名称;
            - 系统用户：需进行鉴别身份的具体系统用户；
            - 不具备条件改造的内容： 不具备改造条件的内容，如果没有具备条件的内容可不输出;
        ## 输出格式
        1. 改造措施 为 XXXXXX;
        2. 密码算法 为 XXXXXX;
        3. 系统用户 为 XXXXXX;
        4. 不具备条件改造的内容 为 XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "ACCESS_CONTROL_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            - "访问控制信息完整性保护"的定义:指的是通过密码算法对访问控制信息进行数字签名/验签从而实现完整性保护的方式。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取具访问控制信息完整性保护的改造措施、改造方式、密码算法及访问控制信息,不得添加任何编造信息;
        3. **输出要求**:
            所提取数据需按照以下要求进行输出:
            - 需改造的内容: 需要使用密码技术进行改造的内容;
            - 系统改造方式: 使用的密码技术;
            - 使用的密码算法: 使用的密码算法名称;
            - 需计算校验值的关键信息: 需进行访问控制信息完整性保护的数据项。
        ## 输出格式
        1. 需改造的内容 为 XXXXXX;
        2. 系统改造方式 为 XXXXXX;
        3. 使用的密码算法 为 XXXXXX;
        4. 需计算校验值的关键信息 为 XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "KEY_DATA_TRANSPORT_CONFIDENTIALITY_AND_INTEGRITY_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            - "重要数据传输机密性和完整性"的定义:指的是通过密码算法对需要传输的重要数据信息进行数字加密/解密操作,从而实现机密性保护的方式。
            - "重要数据传输的完整性保护"的定义:指的是通过密码算法对需要传输的重要数据信息进行数字签名/验签操作,从而实现完整性保护的方式。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 分别提取具重要数据传输的机密性及完整性保护的改造方式、使用的算法、数据传输方、数据接收方及需要保护的重要数据;
        3. **提取流程**:
            请严格按照以下步骤顺序进行信息提取操作，不得修改步骤顺序，也不得添加任何编造信息:
            1. 从目标章节中判断是否采用了建立安全通道的方式实现重要数据的机密性及完整性保护;
            2. 若采用建立安全通道的方式实现重要数据的机密性及完整性保护,则只需要提取建立安全通道所使用的算法及协议;
            3. 如果没有采用建立安全通道的方式,则需要判断需要保护的是应用与应用之间的数据,还是客户端与应用之间的数据;
            4. 然后再分别提取机密性及完整性中需要保护的重要数据、数据传输的双方及重要数据的保护方式
        ## 输出格式
        - **如果建立了安全通道,则输出:**
            1. 需要保护的重要数据 为 XXXXXX、XXXXXX、XXXXXX;
            2. 重要数据的保护方式 为 建立安全通道
            3. 使用的算法及协议 为 算法为:XXXXXX,协议为:XXXXXX;
        - **如果没有建立安全通道,则输出:**
            重要数据传输机密性：
            1. 需要保护的重要数据 为 XXXXXX、XXXXXX、XXXXXX;
            2. 数据传输的双方 为 XXXXXX与XXXXXX;
            3. 重要数据的保护方式 为 XXXXXX;
            重要数据传输完整性：
            1. 需要保护的重要数据 为 XXXXXX、XXXXXX、XXXXXX;
            2. 数据传输的双方 为 XXXXXX与XXXXXX;
            3. 重要数据的保护方式 为 XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "KEY_DATA_STORE_CONFIDENTIALITY_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            - "重要数据存储机密性"的定义:指的是通过密码算法对需要存储的重要数据信息进行数字加密/解密操作,从而实现机密性保护的方式。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取具重要数据存储机密性的改造方式、使用的算法、需计算校验值的关键信息;
        3. **输出要求**:
            所提取数据需按照以下要求进行输出:
            - 系统改造方式:描述系统为保障数据机密性实施的改造措施;
            - 使用的密码算法:明确章节中提到的用于机密性校验的密码算法名称;
            - 需计算校验值的关键信息:列出需进行机密性校验的具体数据项。
        ## 输出格式
        1. 系统改造方式 为 XXXXXX;
        2. 使用的密码算法 为 XXXXXX;
        3. 需计算校验值的关键信息 为 XXXXXX、XXXXXX、XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "KEY_DATA_STORE_INTEGRITY_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            "重要数据存储完整性"的定义:指的是通过密码算法对需要存储的重要数据信息进行数字签名/验签操作,从而实现完整性保护的方式。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取具重要数据存储完整性的改造方式、使用的算法、需计算校验值的关键信息;
        3. **输出要求**:
            所提取数据需按照以下要求进行输出:
            - 系统改造方式:描述系统为保障数据完整性实施的改造措施;
            - 使用的密码算法:明确章节中提到的用于完整性校验的密码算法名称;
            - 需计算校验值的关键信息:列出需进行完整性校验的具体数据项。
        ## 输出格式
        1. 系统改造方式 为 XXXXXX;
        2. 使用的密码算法 为 XXXXXX;
        3. 需计算校验值的关键信息 为 XXXXXX、XXXXXX、XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "KEY_DATA_SAFE_MARK_INTEGRITY_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            "重要信息资源安全标记完整性"的定义:指确保信息系统中重要信息资源的安全标记准确、全面且在传输、存储和处理过程中未被篡改、丢失或破坏。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取具重要信息资源安全标记完整性的改造方式、使用的算法、需计算校验值的重要信息安全标记，如果内容中提到不涉及重要信息资源安全标记完整性,则输出"此项密码应用不适用";
        3. **输出要求**:
            如本系统不涉及重要信息资源安全标记需求或不适用重要信息资源安全标记需求,则输出"此项密码应用不适用",否则需输出以下三类信息,请勿包含其他内容:
            - 系统改造方式:描述系统为重要信息资源安全标记实施的改造措施;
            - 使用的密码算法:明确章节中提到的用于完整性校验的密码算法名称;
            - 需计算校验值的重要信息安全标记:列出需进行完整性校验的具体重要信息安全标记。
        ## 输出格式
        1. **如本系统不涉及重要信息资源安全标记需求或不适用重要信息资源安全标记需求,则输出:**:
            - 此项密码应用不适用
        2. **如本系统涉及重要信息资源安全标记需求,则输出:**:
            1. 系统改造方式 为 XXXXXX;
            2. 使用的密码算法 为 XXXXXX;
            3. 需计算校验值的重要信息安全标记 为 XXXXXX、XXXXXX、XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
    "NON-REPUDIATION_INFORMATION": """
        <指令>

        ## 任务描述
        1. **关键定义**:
            "不可否认性"的定义:指在信息交互过程中,确信参与者的真实同一性,所有参与者都不可能否认或抵赖本人的真实身份,以及提供信息的原样性和完成的操作与承诺。
        2. **提取要求**:
            作为密码测评专家,请从<已知信息>的"密码应用方案的内容"中提取关键信息。提取需严格遵循以下规则:
            - 请首先确认<已知信息>的"密码应用方案的内容"是否为空,若为空,请直接回复「未提取到该章节的内容，请仔细检查章节编号」,不得添加任何编造信息;
            - 所有输出内容必须直接来自<已知信息>的"密码应用方案的内容"的原文,不得添加任何编造信息;
            - 仅提取不可否认性的改造方式及需明确保护不可否认性的重要信息，如果内容中提到不涉及不可否认性,则输出"此项密码应用不适用";
        3. **输出要求**:
            如本系统不涉及不可否认性需求或不适用不可否认性需求,则输出"此项密码应用不适用",否则需输出以下三类信息,请勿包含其他内容:
            - 系统改造方式:描述系统为不可否认性实施的改造措施;
            - 需明确保护不可否认性的重要信息:列出需进行不可否认性校验的具体数据项。
        ## 输出格式
        1. **如本系统不涉及不可否认性需求或不适用不可否认性需求,则输出:**:
            - 此项密码应用不适用
        2. **如本系统涉及不可否认性需求,则输出:**:
            1. 系统改造方式 为 XXXXXX;
            2. 需明确保护不可否认性的重要信息 为 XXXXXX、XXXXXX、XXXXXX;

        </指令>
        <已知信息>

        ## 密码应用方案的内容:
        {doc_paragraph}

        </已知信息>
    """,
}

# 密管服务接口的提示词配置
API_PROMPT_TEMPLATES = {
    "AUTH_API_INFO": """
        ## 获取认证授权码
        - **访问地址**: https://{IP}:15443/MessageService
        - **请求方式**: POST
        - **数据格式**: XML
        - **认证信息（调用认证接口获取）**:
        ```javascript
            Content-Type:text/xml
            Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
        ```
        - **请求报文**:
            1. 报文内容
            ```xml
                <?xml version="1.0" encoding="UTF-8"?>
                <message>
                    <head>
                        <version>1.0</version>
                        <serviceType>OriginalService</serviceType>
                    </head>
                    <body>
                        <appId>test</appId>
                    </body>
                </message>
            ```
            2. 参数说明如下:
                1. version为报文版本信息。标准的BS应用系统和已经具有会话管理的CS应用系统改造时,客户端到应用服务器申请原文,版本号为1.0;没有会话管理的CS应用系统和没有服务端的CD（客户端/数据库）应用系统改造时,客户端到网关申请原文,版本号为1.1;
                2. servicetype为服务类型,OriginalService,表示请求的是获取认证授权码服务;
                3. appId为应用ID,应用注册时分配的唯一标识;
        - **响应报文**:
            1. 报文内容
            ```xml
                <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                <message>
                    <head>
                        <messageState>false</messageState>
                        <serviceType>OriginalService</serviceType>
                        <version>1.0</version>
                    </head>
                    <body>
                        <original>cViE0jzmi+zolcf0LVflIa1DHoJ736H5ySJxDPsQw8g=</original>
                    </body>                                       
                </message>
            ```
            2. 参数说明如下:
                1. messageState为消息状态,true表示成功,false表示失败;
                2. version为报文版本信息。标准的BS应用系统和已经具有会话管理的CS应用系统改造时,客户端到应用服务器申请原文,版本号为1.0;没有会话管理的CS应用系统和没有服务端的CD（客户端/数据库）应用系统改造时,客户端到网关申请原文,版本号为1.1;
                3. servicetype为服务类型,OriginalService,表示请求的是获取认证授权码服务;
                4. original为认证授权码,应用需使用该码进行后续接口调用,值为[BASE64]编码的字符串;
        ## XML报文认证授权码
        - **访问地址**: https://{IP}:15443/MessageService
        - **请求方式**: POST
        - **数据格式**: XML
        - **认证信息（调用认证接口获取）**:
        ```javascript
            Content-Type:text/xml
            Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
        ```
        - **请求报文**:
            1. 报文内容
            ```xml
                <?xml version="1.0" encoding="UTF-8"?>
                <message>
                    <head>
                        <version>1.0</version>
                        <serviceType>AuthenService</serviceType>
                    </head>
                    <body>
                        <clientInfo>
                            <clientIP>10.42.0.0</clientIP>
                        </clientInfo>
                        <appId>oa</appId>
                        <authen>
                            <authCredential authMode="cert">
                                <detach>MIIDPwYKKoEcz1UGAQQCAqCCAy8wggMrAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAl4wggJaMIICAKADAgECAghsHYjo4cmn/zAKBggqgRzPVQGDdTAtMQswCQYDVQQGEwJDTjEMMAoGA1UECgwDSklUMRAwDgYDVQQDDAdERU1PQ0EyMB4XDTIyMDcwNzA4NTYwOVoXDTIzMDcwNzA4NTYwOVowJzElMCMGA1UEAwwc5a6J5YWo57O757uf566h55CG5ZGYLeWPjOivgTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABD5EI6U109HTsZDiJrssCKDCYlU1Y/Fs2Tiw/dtnHb4wJqmTUk9V+LDDLHlDMp4tvtDH5g2N2deUDXtLZpEoEVijggEOMIIBCjAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUFK4KJT+WNG4PIS1kwOD3ZXAJZ6UwHQYDVR0OBBYEFCOvpMbPCVzz3LVRaJyrkkAqmjkaMCMGA1UdHwQcMBowGKAWoBSGEjEyNy4wLjAuMS9jcmwwLmNybDA0BgNVHSAELTArMCkGAioBMCMwIQYIKwYBBQUHAgEWFWh0dHA6Ly8xMjcuMC4wLjE6Nzc3NzBdBggrBgEFBQcBAQRRME8wKAYIKwYBBQUHMAKGHGh0dHA6Ly8xMjcuMC4wLjEvY2Fpc3N1ZS5odG0wIwYIKwYBBQUHMAGGF2h0dHA6Ly8xMjcuMC4wLjE6MjA0NDMvMAoGCCqBHM9VAYN1A0gAMEUCIQD7qAcMk1IXtqAkKqyd8u+nH0Pe9PC8P3v3H6k0erI7ewIgPzlaEb42Qvtf3x7uaHOqoawjDgyCXUIUWv/9jX2jqmkxgacwgaQCAQEwOTAtMQswCQYDVQQGEwJDTjEMMAoGA1UECgwDSklUMRAwDgYDVQQDDAdERU1PQ0EyAghsHYjo4cmn/zAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEcwRQIhAPBAn1EWpeXMERxAX4giDRqwW6oKq7Yx4MvR6pwxcw61AiAknYhr5pGH/N+pxkN0N+D+NUY9ugA0VeuSALrTvhgBaQ==</detach>
                                <original>NjY4NA==</original>
                            </authCredential>
                        </authen>
                        <accessControl>false</accessControl>
                        <attributes attributeType="all">
                            <attr name="X509Certificate.SubjectDN" namespace="http://www.jit.com.cn/cinas/ias/ns/saml/saml11/X.509"/>
                            <attr name="UMS.UserID" namespace="http://www.jit.com.cn/ums/ns/user"/>
                            <attr name="机构字典" namespace="http://www.jit.com.cn/ums/ns/user"/>
                        </attributes>
                    </body>
                </message>
            ```
            2. 参数说明如下:
                - head部分
                    1. version为报文版本信息。标准的BS应用系统和已经具有会话管理的CS应用系统改造时,客户端到应用服务器申请原文,版本号为1.0;没有会话管理的CS应用系统和没有服务端的CD（客户端/数据库）应用系统改造时,客户端到网关申请原文,版本号为1.1;
                    2. servicetype为服务类型,OriginalService,表示请求的是获取认证授权码服务;
                - body部分
                    1. clientInfo节点
                        - clientInfo:客户端信息结点,该节点下可以添加任意的客户端信息。
                        - clientIP:客户端IP地址。
                    2. appId节点
                        - appId:应用系统在网关注册的应用标识,网关收到请求时会检查应用标识是否已经在网关注册,如果未注册则拒绝处理,返回错误信息。
                    3. authen节点
                        - authen:身份信息结点,此节点表示用户的各种身份凭据信息。
                        - authCredential:认证凭据,可以多次出现,表示用户的一种身份信息,例如:证书、用户名/口令等。
                        - authMode:认证方式,表示authCredential节点的信息需要何种认证方式进行处理,目前支持两种认证方式,即:“cert”和“password”,分别表示证书认证方式和口令认证方式。
                        - detach:认证请求包,Detach格式的认证请求包中不包含认证原文,所以需要与<original>节点配合使用将认证原文提交给网关。
                        - original:网关颁发的认证原文,原文在提交认证时需经过Base64编码。
                        - certInfo:X509证书,证书在提交认证时需经过Base64编码。
                        - attach: 网关支持的另一种格式的认证请求包,这种格式的请求包中会包含认证原文,所以不需要像使用<detach>节点一样单独提交原文。在同一<authCredential>节点下<attach>结点不能与<detach>和<original>结点同时使用。
                        - username:用户名。
                        - password:密码。
                    4. accessControl节点
                        - accessControl:是否检查访问控制状态。false表示不检查,当设置为“false”时,网关不做任何处理,响应报文中也不会有任何相关信息。true表示检查,当设置为“true”时,网关检查用户是否允许访问此应用,并在报文中给出相应的信息。
                    5. attributes节点
                        该节点表示应用系统需要请求的用户属性这些属性来自于用户的身份证书、UMS和PMS,在实际应用环境中应用系统可根据需要向网关请求用户的所有属性、指定属性或不请求属性。
                        - attributes:用户属性请求列表
                        - attributeType:用户属性请求类型。分为“all”、“portion”、“none”。“all”表示请求所有属性信息;“portion”表示只请求<attr>节点列表中指定的属性信息;“none”表示不请求任何属性信息。
                        - attr:指定要请求的某项用户属性信息,例如:X509Certificate.SubjectDN表示请求的是用户身份证书中的主题（证书DN）信息。
                        - name:所请求属性的名称,可为中文。常用取值如下:
                            1. 证书认证时使用

                            | 参数 | 说明 |
                            |---------|---------|
                            | X509Certificate.NotBefore		 | 证书开始生效时间 |
                            | X509Certificate.NotAfter		 | 证书结束生效时间 |
                            | X509Certificate.SubjectDN		 | 证书主题 |
                            | X509Certificate.SerialNumber	 | 证书序列号 |
                            | X509Certificate.IssuerDN		 | 证书颁发者DN |

                            2. 口令认证时使用

                            | 参数 | 说明 |
                            |---------|---------|
                            | UMS.UserID			| 用户ID |
                            | UMS.Username			| 用户名 |
                            | UMS.LogonName			| 用户登录名 |

                            由于有部分信息是自定义属性,属性名称不确定,依实际情况而定。因此建议在调试时先将“attributeType”的值设置为“all”,当调试通过后,再将“attributeType”改为“portion”。
                        - namespace:所请求属性的命名空间。常用取值如下（常量值,无具体含义）:
                            - 证书属性命名空间:http://www.jit.com.cn/cinas/ias/ns/saml/saml11/X.509
                            - UMS3.X属性命名空间:http://www.jit.com.cn/ums/ns/3.0/user
                            - 其它版本UMS属性命名空间:http://www.jit.com.cn/ums/ns/user
        - **响应报文**:
            1. 响应状态码
                - Http Status Code 状态码

                | status	| 说明 |
                |---------|---------|
                | 200	| Success |
                | 400	| Bad Request |
                | 401	| Unauthorized |
                | 403	| No authentication |
                | 500	| Internal Server Error |

                如果Http Status Code为200,则说明响应成功！
            2. 报文内容
            ```xml
                <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                <message>
                    <head>
                        <version>1.X</version>
                        <serviceType>AuthenService</serviceType>
                        <messageState>false/true</messageState>
                        <messageCode>00000001</messageCode>
                        <messageDesc>报文解析异常</messageDesc>
                    </head>
                    <body>
                        <authResultSet allFailed="false">
                            <authResult authMode="cert" success="false">
                                <authMessageCode></authMessageCode>
                                <authMessageDesc></authMessageDesc>
                            </authResult>
                            <authResult authMode="password" success="true">
                            </authResult>
                        </authResultSet>
                        <accessControlResult>Permit/Deny</accessControlResult>
                        <attributes>
                            <attr name="" namespace="">属性值</attr>
                            <attr name="" namespace="" parentName="">属性值</attr>
                        </attributes>
                    </body>
                </message>
            ```
            2. 参数说明如下:
                响应报文分为报文头和报文体。报文头由版本信息、服务类型、错误信息状态和错误信息四部分组成。报文体由认证结果、访问控制结果和用户属性列表三部分组成。
                - head部分:
                    - version:报文版本信息。
                    - servicetype:服务类型,网关会根据服务类型指定的服务将请求分发给该服务。
                    - messageState:表示业务是否出现异常情况。“true”表示出现了异常。当值为“true”时,“messageCode”和“messageDesc”结点会给出错误代码及描述;“false”表示业务正常。无“messageCode”和“messageDesc”结点。
                    - messageCode:错误代码
                    - messageDesc:错误描述
                - body部分:
                    1. authResultSet节点
                        - authResultSet:认证结果集
                        - allFailed:是否所有认证请求都失败。“true”所有认证请求都失败;“false”至少有一种认证请求成功。
                        - authResult:认证结果项
                        - authMode:认证的方式。包括“cert”和“password”,各表示证书认证方式和口令认证方式。
                        - success:认证结果。“true”表示当前认证方式成功。“false”表示认证失败,并出现下面两个结点。做错误提示。
                        - authMessageCode:认证错误代码
                        - authMessageDesc:认证错误描述
                    2. accessControlResult节点
                        - accessControlResult:网关根据规则对该用户计算的访问控制结果。“Permit”表示允许访问。“Deny”表示禁止访问。当认证请求报文中<accessControl>节点值为“false”时,此节点在响应报文中不出现。
                    3. attributes节点
                        - attributes:用户属性列表
                        - attr:每个表示属性的定义
                        - name:所请求属性的名称,与请求报文中相同。
                        - namespace:所请求属性命名空间,与请求报文中相同。
                        - parentName:所请求属性的子属性的父级名称(或CODE)。当请求的属性有子属性时,将会返回该属性下所有相应属性。
                        - 节点值:根据“name”和“namespace”取回的属性值(或CODE),如:
                            ```xml
                            <attr name=" X509Certificate.SubjectDN " namespace="http://www.jit.com.cn/cinas/ias/ns/saml/saml11/X.509">
                                CN=test,O=jit,C=cn
                            </attr>
                            ```
                            当存在多值的情况使用空格(“ ”)进行分隔,例如:123 456。
    """,
    "ACCESS_CONTROL_API_INFO": """
        ## 访问控制数据完整性保护计算HMAC的rustful接口的描述如下:
        - **访问地址**: https://{IP}:15443/api/v1/cipher/hmac
        - **请求方式**: POST
        - **数据格式**: JSON
        - **认证信息（调用认证接口获取）**:
        ```javascript
            Content-Type:application/json
            Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
        ```
        - **请求报文**:
            1. 报文内容
            ```json
                {
                    "keyCode":"0ecc8a1adc224f16b7701888352ec30b",
                    "algorithmParam":"HMAC_SM3",
                    "data":"MTIzNDU="
                }
            ```
            2. 参数说明如下:
                1. "keyCode"为要使用的密钥标识;
                2. "algorithmParam"为使用的密码算法,可选择的值为"HMAC_SM3";
                3. "data"为需进行完整性保护的信息，值为[BASE64]编码的字符串
        - **响应报文**:
            1. 报文内容
            ```json
                {
                    "code": "0",
                    "message": "success",
                    "data": {
                        "hmac": "E/zYUsUnqegLKzrlmMl3bw=="
                    }
                }
            ```
            2. 参数说明如下:
                1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                2. "message"为返回的状态信息,其中返回"success"=调用成功;
                3. "data"节点的参数说明如下:
                    - "hmac"为使用"HMAC_SM3"算法进行完整性保护计算后的结果,值为[BASE64]编码的字符串;
    """,
    "KEY_DATA_TRANSPORT_CONFIDENTIALITY_AND_INTEGRITY_API_INFO": """
        # 应用与应用间数据传输机密性和完整性保护
        ## 应用与应用间数据传输机密性保护
        1. 传输数据加密rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/cipher/transport/encrypt
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "appCode":"sbyTest_123",
                        "data":"a2lzdWRmaDIyNGUz"
                    }
                ```
                2. 参数说明如下:
                    1. "appCode"为要使用的应用标识;
                    2. "data"为需进行加密保护的信息，值为[BASE64]编码的字符串
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "encData": "MIG1MBMGByqGSM49AgEGCCqBHM9VAYItMA0GCWCGSAFlAwQBAQUAA3wAMHkCIQCBeU4jNZqMqcWceGTqINiy6Miw2XQPDA31cQji2tVsfAIgXuUoHPOxqoGpMz5TPuWh+NhirrSm/b+VDp5SWOqdcOkEIK4ZUt2EDr3k0UTh1b80gGt/ouUnnHaptjGCCEq16jBWBBC+eTAUKmfig1HoeAuJNSE5AxEALBXxGJPSOfAbgcYW+OURrA=="
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "encData"为加密计算后的结果,值为[BASE64]编码的字符串;
        2. 传输数据解密rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/cipher/transport/decrypt
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "appCode":"sbyTest_123",
                        "encData":"MIG1MBMGByqGSM49AgEGCCqBHM9VAYItMA0GCWCGSAFlAwQBAQUAA3wAMHkCIQCBeU4jNZqMqcWceGTqINiy6Miw2XQPDA31cQji2tVsfAIgXuUoHPOxqoGpMz5TPuWh+NhirrSm/b+VDp5SWOqdcOkEIK4ZUt2EDr3k0UTh1b80gGt/ouUnnHaptjGCCEq16jBWBBC+eTAUKmfig1HoeAuJNSE5AxEALBXxGJPSOfAbgcYW+OURrA=="
                    }
                ```
                2. 参数说明如下:
                    1. "appCode"为要使用的应用标识;
                    2. "encData"为需进行解密的信息，值为[BASE64]编码的字符串
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "data": "a2lzdWRmaDIyNGUz"
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "data"为解密计算后的结果,值为[BASE64]编码的字符串;
        ## 应用与应用间数据传输完整性保护
        1. 传输数据MAC计算的rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/cipher/transport/mac
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "algorithmParam":"HMAC-SM3",
                        "data":"WXpwag=="
                    }
                ```
                2. 参数说明如下:
                    1. "algorithmParam"为使用mac计算所使用的算法，可取值SM4_MAC或HMAC-SM3;
                    2. "data"为需进行MAC计算保护完整性的信息，值为[BASE64]编码的字符串
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "mac": "Aaubay1rYo9gYDQ/QbXRdw==",
                            "iv": "bYvaHSBX5dqd/scu6ITaRQ=="
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "mac"为MAC计算后的结果,值为[BASE64]编码的字符串;
                        - "iv"为IV值,为[BASE64]编码的字符串;
        2. 传输数据MAC验证rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/cipher/transport/macVerify
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "algorithmParam":"HMAC-SM3",
                        "data":"WXpwag==",
                        "mac": "Aaubay1rYo9gYDQ/QbXRdw==",
                        "iv": "bYvaHSBX5dqd/scu6ITaRQ==",
                        "appCode":"sbyTest_123"
                    }
                ```
                2. 参数说明如下:
                    1. "algorithmParam"为使用mac计算所使用的算法，可取值SM4_MAC或HMAC-SM3;
                    2. "data"为未进行MAC计算的原文信息，值为[BASE64]编码的字符串
                    3. "mac"为计算后的MAC信息，值为[BASE64]编码的字符串
                    4. "iv"为IV向量，值为[BASE64]编码的字符串
                    5. "appCode"为要使用的应用标识;
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "verifyResult": true
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "verifyResult"为MAC验证的结果，true为验证通过，false为验证失败;
        # 终端与应用间数据传输机密性和完整性保护
        ## 终端与应用间数据传输机密性保护
        终端与应用间数据传输机密性保护所使用的密码算法需要基于数字证书，所以在进行机密性或完整性保护前，必须先获取数字证书信息，之后再使用数字证书信息制作数字信封。
        1. 证书查询rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/querycert
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "certinfo":"cnNh",
                        "certmode":"certid",
                        "keyalgorithm":"SM2",
                        "certuse":"sign"
                    }
                ```
                2. 参数说明如下:
                    1. "certinfo"为证书信息： certmode为certid时传证书标识[BASE64]； certmode为dscert时传证书实体[BASE64];
                    2. "certmode"为证书模型：目前只支持certid或dscert
                    3. "keyalgorithm"为算法[忽略大小写],目前只支持SM2
                    4. "certuse"为证书用途：可选范围包括sign,verify,encrypt,decrypt
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "data": {
                            "certinfo": {
                                "dscert": "MIICXDCCAcWgAwIBAgIIP9G8rEwUmi0wDQYJKoZIhvcNAQEFBQAwLzELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDESMBAGA1UEAwwJTkVXREVNT0NBMB4XDTIwMDkxMTAwNTgyNloXDTMwMDkwOTAwNTgyNlowLjELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA2ppdDERMA8GA1UEAwwIMjA0OHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCFe9j31ykrWRASN0jxd5b1P1PFL7t9f+5ODIcjVex7pZaBFIpnjFPT4XskAoRlOZuOX579ZhoQODvCa3vVdrAkGVC1By0q0S4N/14fiHs8N5NXzZMjdDBZCfq/g/AeAFeO5KG9aVskifYv/jquLk/+BJCs8ZNOWSbgWfcq5g7uU62/9QbaL+mB/869WBwQx5OO5UbXPTF8l/aVW3tRR+MdAUgSIOynY8yKQ9Jey1CpN8qQSc+1fCB7w4j5/zWfkOh9+uVMCiPZ1IyhfQn8agMUwQ5LOFAytjHhoeOpnqP8kqqSxEsfCBinFbS5Ah9Duw/PcKozfGYWZtnX9UwetkWJAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAgne6P7hH2BpcyVk+uw1N8ZnwPPNyDxZxLIiAqP/i3332OGcPTKMJO0jYZMZaIqoJaRQcGWsoC62ldxMWh8/Blh7rQgNL9MtT+JIkLxBHEX7JQIcBwoeuH2o8CiE7eepoI1L0EZTW/egp4P/64AeJ7y19+lt7lftyG9itc2zUYmw=",
                                "notbefore": "Fri Sep 11 08:58:26 CST 2020",
                                "notafter": "Mon Sep 09 08:58:26 CST 2030",
                                "issure": "Q049TkVXREVNT0NBLE89SklULEM9Q04=",
                                "sn": "3FD1BCAC4C149A2D",
                                "subjectdn": "Q049MjA0OHRlc3QsTz1qaXQsQz1DTg=="
                            },
                            "version": "v1"
                        },
                        "message": ""
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "certinfo"为证书信息;
                            - "dscert"为证书,值为[BASE64]编码的字符串;
                            - "notbefore"为证书开始生效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "notafter"为证书开始失效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "issure"为颁发者,值为[BASE64]编码的字符串;
                            - "sn"为序列号;
                            - "subjectdn"为证书主题,值为[BASE64]编码的字符串;
                        - "version"为版本号;
        2. 制作数字信封rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/envelop
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "plain": "dGVzdF9zbTJfeF8yMDIzMDYxNg==",
                        "certinfo": "dGVzdF94aHE=",
                        "certmode": "certid",
                        "symmalg": "SM4",
                        "appinfo": "YTph"
                    }
                ```
                2. 参数说明如下:
                    1. "plain"为原文信息,值为[BASE64]编码的字符串;
                    2. "certinfo"为证书信息:certmode为certid时传证书标识[BASE64];certmode为dscert时传证书实体[BASE64];
                    3. "certmode"为证书模型:目前只支持certid或dscert;
                    4. "symmalg"为对称算法[忽略大小写],目前只支持sm4;
                    5. "appinfo"为需进行加密保护的信息,值为[BASE64]编码的字符串;
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "data": {
                            "envelopdata": "MIIBHwYKKoEcz1UGAQQCA6CCAQ8wggELAgEAMYHKMIHHAgEBMDgwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBAgg4EKJxuABdETALBgkqgRzPVQGCLQMEezB5AiB+HK34Tg3lTKhTc/BP6JLe3LwNZ49h0t8GlwYJ5FV1twIhAJIVFUBNsf80BYkQ0t9XrSCd296Y7q7Z1b+3J7CCcL47BCAWeEqqIAS82VnQgS3dluj8O2rA8YHj7c+SXjrrykOoRwQQvzu8CIjkPILNc3ZaOj7rPzA5BgoqgRzPVQYBBAIBMAkGByqBHM9VAWiAIMaFvprY913428i6dTcSm0WN0q2a9Va0bU4RMX7K2mtO",
                            "dscert": "MIICZDCCAc2gAwIBAgIIOBCicbgAXREwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBMB4XDTIzMDgwMzA1MTEzOFoXDTI0MDgwMjA1MTEzOFowIDELMAkGA1UEBhMCY24xETAPBgNVBAMMCHRlc3RfeGhxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEQ/13ffqrsIoJCezpLd27DIHDixkmoTX9D0IvaEAWxY9KY2gpzig9kVNJ70u8GVYW8SknjfRGSQ2qBIQ/+6Vxa6OB4TCB3jAfBgNVHSMEGDAWgBQ+t3QK2sLYYku6uPMGIjMJFSM8qzAdBgNVHQ4EFgQUODVknbyTa2vZQikUdGC+EmDJLgIwEQYDVR0gBAowCDAGBgIqATAAMA4GA1UdDwEB/wQEAwIGwDAaBgNVHR8EEzARMA+gDaALhgkxL2NybC5jcmwwXQYIKwYBBQUHAQEEUTBPMCgGCCsGAQUFBzAChhxodHRwOi8vMTI3LjAuMC4xL2NhaXNzdWUuaHRtMCMGCCsGAQUFBzABhhdodHRwOi8vMTI3LjAuMC4xOjIwNDQzLzANBgkqhkiG9w0BAQsFAAOBgQA9tdpfOkhLZSWRZEyF+X3yFY3RtjaIRS4YOZPt6lH4zmuG0QqFNVMpQm9Q/AVIHUNx3oDwoRIp6ffh0ykhFU0lSG2WbZ1Z5iDFtXNxqZK6ruzHq/sacoAOKQOHhq9tMS1N+jei3qdmRqIgFm71JM20RNPdRY9yMYu9Let/CLwCrQ==",
                            "version": "v1"
                        },
                        "message": "success"
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "envelopdata"为信封结果,值为[BASE64]编码的字符串;
                        - "dscert"为证书信息,值为[BASE64]编码的字符串;
                        - "version"版本号;
        3. 解密数字信封rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/decryptenvelop
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "envelopdata":"MIIBHwYKKoEcz1UGAQQCA6CCAQ8wggELAgEAMYHKMIHHAgEBMDgwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBAgg4EKJxuABdETALBgkqgRzPVQGCLQMEezB5AiB+HK34Tg3lTKhTc/BP6JLe3LwNZ49h0t8GlwYJ5FV1twIhAJIVFUBNsf80BYkQ0t9XrSCd296Y7q7Z1b+3J7CCcL47BCAWeEqqIAS82VnQgS3dluj8O2rA8YHj7c+SXjrrykOoRwQQvzu8CIjkPILNc3ZaOj7rPzA5BgoqgRzPVQYBBAIBMAkGByqBHM9VAWiAIMaFvprY913428i6dTcSm0WN0q2a9Va0bU4RMX7K2mtO",
                        "appinfo":"YTph"
                    }
                ```
                2. 参数说明如下:
                    1. "envelopdata"为信封结果,值为[BASE64]编码的字符串;
                    2. "appinfo"为应用的标识信息,值为[BASE64]编码的字符串;
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "plaindata": "dGVzdF9zbTJfeF8yMDIzMDYxNg==",
                            "asymmalg": "SM2",
                            "symmalg": "SM4_ECB",
                            "version": "v1",
                            "certinfo": {
                                "dscert": "MIICZDCCAc2gAwIBAgIIOBCicbgAXREwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBMB4XDTIzMDgwMzA1MTEzOFoXDTI0MDgwMjA1MTEzOFowIDELMAkGA1UEBhMCY24xETAPBgNVBAMMCHRlc3RfeGhxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEQ/13ffqrsIoJCezpLd27DIHDixkmoTX9D0IvaEAWxY9KY2gpzig9kVNJ70u8GVYW8SknjfRGSQ2qBIQ/+6Vxa6OB4TCB3jAfBgNVHSMEGDAWgBQ+t3QK2sLYYku6uPMGIjMJFSM8qzAdBgNVHQ4EFgQUODVknbyTa2vZQikUdGC+EmDJLgIwEQYDVR0gBAowCDAGBgIqATAAMA4GA1UdDwEB/wQEAwIGwDAaBgNVHR8EEzARMA+gDaALhgkxL2NybC5jcmwwXQYIKwYBBQUHAQEEUTBPMCgGCCsGAQUFBzAChhxodHRwOi8vMTI3LjAuMC4xL2NhaXNzdWUuaHRtMCMGCCsGAQUFBzABhhdodHRwOi8vMTI3LjAuMC4xOjIwNDQzLzANBgkqhkiG9w0BAQsFAAOBgQA9tdpfOkhLZSWRZEyF+X3yFY3RtjaIRS4YOZPt6lH4zmuG0QqFNVMpQm9Q/AVIHUNx3oDwoRIp6ffh0ykhFU0lSG2WbZ1Z5iDFtXNxqZK6ruzHq/sacoAOKQOHhq9tMS1N+jei3qdmRqIgFm71JM20RNPdRY9yMYu9Let/CLwCrQ==",
                                "notbefore": "2023-08-03 13:00:08",
                                "notafter": "2024-08-02 13:00:08",
                                "issure": "Q049REVNT0NBLE89SklULEM9Q04=",
                                "sn": "3810a271b8005d11",
                                "subjectdn": "Q049dGVzdF94aHEsQz1jbg=="
                            }
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "plaindata"为原文信息,值为[BASE64]编码的字符串;
                        - "asymmalg"为非对称加密算法，例如SM2;
                        - "symmalg"对称加密算法，例如SM4_ECB;
                        - "certinfo"为证书信息;
                            - "dscert"为证书,值为[BASE64]编码的字符串;
                            - "notbefore"为证书开始生效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "notafter"为证书开始失效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "issure"为颁发者,值为[BASE64]编码的字符串;
                            - "sn"为序列号;
                            - "subjectdn"为证书主题,值为[BASE64]编码的字符串;
                        - "version"为版本号;
        ## 终端与应用间数据传输完整性保护
        1. 终端与应用间传输数据所使用数字证书P7 Detach签名的rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/detachsign
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {   
                        "certmode":"certid",
                        "certinfo":"dGVzdF94aHE=",
                        "digestalg":"SM3",
                        "plain":"dGVzdF9zbTJfeF8yMDIzMDYxNg==",
                        "appinfo":"YTph"
                    }
                ```
                2. 参数说明如下:
                    1. "certmode"为证书模型,目前只支持certid;
                    2. "certinfo"为证书信息:证书标识，值为[BASE64]编码的字符串;
                    3. "digestalg"为摘要算法[忽略大小写],仅支持SM3;
                    4. "plain"为原文信息，值为[BASE64]编码的字符串;
                    5. "appinfo"为应用的标识信息，值为[BASE64]编码的字符串;
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "data": {
                            "signdata": "MIIDRAYKKoEcz1UGAQQCAqCCAzQwggMwAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAmgwggJkMIIBzaADAgECAgg4EKJxuABdETANBgkqhkiG9w0BAQsFADAsMQswCQYDVQQGEwJDTjEMMAoGA1UECgwDSklUMQ8wDQYDVQQDDAZERU1PQ0EwHhcNMjMwODAzMDUxMTM4WhcNMjQwODAyMDUxMTM4WjAgMQswCQYDVQQGEwJjbjERMA8GA1UEAwwIdGVzdF94aHEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARD/Xd9+quwigkJ7Okt3bsMgcOLGSahNf0PQi9oQBbFj0pjaCnOKD2RU0nvS7wZVhbxKSeN9EZJDaoEhD/7pXFro4HhMIHeMB8GA1UdIwQYMBaAFD63dArawthiS7q48wYiMwkVIzyrMB0GA1UdDgQWBBQ4NWSdvJNra9lCKRR0YL4SYMkuAjARBgNVHSAECjAIMAYGAioBMAAwDgYDVR0PAQH/BAQDAgbAMBoGA1UdHwQTMBEwD6ANoAuGCTEvY3JsLmNybDBdBggrBgEFBQcBAQRRME8wKAYIKwYBBQUHMAKGHGh0dHA6Ly8xMjcuMC4wLjEvY2Fpc3N1ZS5odG0wIwYIKwYBBQUHMAGGF2h0dHA6Ly8xMjcuMC4wLjE6MjA0NDMvMA0GCSqGSIb3DQEBCwUAA4GBAD212l86SEtlJZFkTIX5ffIVjdG2NohFLhg5k+3qUfjOa4bRCoU1UylCb1D8BUgdQ3HegPChEinp9+HTKSEVTSVIbZZtnVnmIMW1c3Gpkrqu7Mer+xpygA4pA4eGr20xLU36N6Lep2ZGoiAWbvUkzbRE091Fj3Ixi70t638IvAKtMYGiMIGfAgEBMDgwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBAgg4EKJxuABdETAKBggqgRzPVQGDETALBgkqgRzPVQGCLQEERzBFAiBuLAVSPYmQLiC5QanRwjvdFEN++RXCE3QwYVS4UYIckQIhAOIiep0O/ZZJDIGZTymek+YL8dsiXG+7cD9uSoI8YdC4",
                            "dscert": ""MIICZDCCAc2gAwIBAgIIOBCicbgAXREwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBMB4XDTIzMDgwMzA1MTEzOFoXDTI0MDgwMjA1MTEzOFowIDELMAkGA1UEBhMCY24xETAPBgNVBAMMCHRlc3RfeGhxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEQ/13ffqrsIoJCezpLd27DIHDixkmoTX9D0IvaEAWxY9KY2gpzig9kVNJ70u8GVYW8SknjfRGSQ2qBIQ/+6Vxa6OB4TCB3jAfBgNVHSMEGDAWgBQ+t3QK2sLYYku6uPMGIjMJFSM8qzAdBgNVHQ4EFgQUODVknbyTa2vZQikUdGC+EmDJLgIwEQYDVR0gBAowCDAGBgIqATAAMA4GA1UdDwEB/wQEAwIGwDAaBgNVHR8EEzARMA+gDaALhgkxL2NybC5jcmwwXQYIKwYBBQUHAQEEUTBPMCgGCCsGAQUFBzAChhxodHRwOi8vMTI3LjAuMC4xL2NhaXNzdWUuaHRtMCMGCCsGAQUFBzABhhdodHRwOi8vMTI3LjAuMC4xOjIwNDQzLzANBgkqhkiG9w0BAQsFAAOBgQA9tdpfOkhLZSWRZEyF+X3yFY3RtjaIRS4YOZPt6lH4zmuG0QqFNVMpQm9Q/AVIHUNx3oDwoRIp6ffh0ykhFU0lSG2WbZ1Z5iDFtXNxqZK6ruzHq/sacoAOKQOHhq9tMS1N+jei3qdmRqIgFm71JM20RNPdRY9yMYu9Let/CLwCrQ==",
                            "version": "v1"
                        },
                        "message": ""
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "signdata"为签名结果,值为[BASE64]编码的字符串;
                        - "dscert"为证书信息,值为[BASE64]编码的字符串;
                        - "version"为版本号;
        2. 终端与应用间传输数据所使用数字证书P7 Detach验签的rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/detachverifysign
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "signdata":"MIIDRAYKKoEcz1UGAQQCAqCCAzQwggMwAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAmgwggJkMIIBzaADAgECAgg4EKJxuABdETANBgkqhkiG9w0BAQsFADAsMQswCQYDVQQGEwJDTjEMMAoGA1UECgwDSklUMQ8wDQYDVQQDDAZERU1PQ0EwHhcNMjMwODAzMDUxMTM4WhcNMjQwODAyMDUxMTM4WjAgMQswCQYDVQQGEwJjbjERMA8GA1UEAwwIdGVzdF94aHEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARD/Xd9+quwigkJ7Okt3bsMgcOLGSahNf0PQi9oQBbFj0pjaCnOKD2RU0nvS7wZVhbxKSeN9EZJDaoEhD/7pXFro4HhMIHeMB8GA1UdIwQYMBaAFD63dArawthiS7q48wYiMwkVIzyrMB0GA1UdDgQWBBQ4NWSdvJNra9lCKRR0YL4SYMkuAjARBgNVHSAECjAIMAYGAioBMAAwDgYDVR0PAQH/BAQDAgbAMBoGA1UdHwQTMBEwD6ANoAuGCTEvY3JsLmNybDBdBggrBgEFBQcBAQRRME8wKAYIKwYBBQUHMAKGHGh0dHA6Ly8xMjcuMC4wLjEvY2Fpc3N1ZS5odG0wIwYIKwYBBQUHMAGGF2h0dHA6Ly8xMjcuMC4wLjE6MjA0NDMvMA0GCSqGSIb3DQEBCwUAA4GBAD212l86SEtlJZFkTIX5ffIVjdG2NohFLhg5k+3qUfjOa4bRCoU1UylCb1D8BUgdQ3HegPChEinp9+HTKSEVTSVIbZZtnVnmIMW1c3Gpkrqu7Mer+xpygA4pA4eGr20xLU36N6Lep2ZGoiAWbvUkzbRE091Fj3Ixi70t638IvAKtMYGiMIGfAgEBMDgwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBAgg4EKJxuABdETAKBggqgRzPVQGDETALBgkqgRzPVQGCLQEERzBFAiBuLAVSPYmQLiC5QanRwjvdFEN++RXCE3QwYVS4UYIckQIhAOIiep0O/ZZJDIGZTymek+YL8dsiXG+7cD9uSoI8YdC4",
                        "plain":"dGVzdF9zbTJfeF8yMDIzMDYxNg==",
                        "digestalg":"SM3",
                        "appinfo":"YTph"
                    }
                ```
                2. 参数说明如下:
                    1. "signdata"为签名结果，值为[BASE64]编码的字符串;
                    2. "plain"为原文信息，值为[BASE64]编码的字符串;
                    3. "digestalg"为摘要算法[忽略大小写],仅支持SM3;
                    4. "appinfo"为应用的标识信息，值为[BASE64]编码的字符串;
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "digestalg": "SM3",
                            "plain": "dGVzdF9zbTJfeF8yMDIzMDYxNg==",
                            "version": "v1",
                            "certinfo": {
                                "dscert": "MIICZDCCAc2gAwIBAgIIOBCicbgAXREwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0pJVDEPMA0GA1UEAwwGREVNT0NBMB4XDTIzMDgwMzA1MTEzOFoXDTI0MDgwMjA1MTEzOFowIDELMAkGA1UEBhMCY24xETAPBgNVBAMMCHRlc3RfeGhxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEQ/13ffqrsIoJCezpLd27DIHDixkmoTX9D0IvaEAWxY9KY2gpzig9kVNJ70u8GVYW8SknjfRGSQ2qBIQ/+6Vxa6OB4TCB3jAfBgNVHSMEGDAWgBQ+t3QK2sLYYku6uPMGIjMJFSM8qzAdBgNVHQ4EFgQUODVknbyTa2vZQikUdGC+EmDJLgIwEQYDVR0gBAowCDAGBgIqATAAMA4GA1UdDwEB/wQEAwIGwDAaBgNVHR8EEzARMA+gDaALhgkxL2NybC5jcmwwXQYIKwYBBQUHAQEEUTBPMCgGCCsGAQUFBzAChhxodHRwOi8vMTI3LjAuMC4xL2NhaXNzdWUuaHRtMCMGCCsGAQUFBzABhhdodHRwOi8vMTI3LjAuMC4xOjIwNDQzLzANBgkqhkiG9w0BAQsFAAOBgQA9tdpfOkhLZSWRZEyF+X3yFY3RtjaIRS4YOZPt6lH4zmuG0QqFNVMpQm9Q/AVIHUNx3oDwoRIp6ffh0ykhFU0lSG2WbZ1Z5iDFtXNxqZK6ruzHq/sacoAOKQOHhq9tMS1N+jei3qdmRqIgFm71JM20RNPdRY9yMYu9Let/CLwCrQ==",
                                "notbefore": "2023-08-03 13:00:08",
                                "notafter": "2024-08-02 13:00:08",
                                "issure": "Q049REVNT0NBLE89SklULEM9Q04=",
                                "sn": "3810a271b8005d11",
                                "subjectdn": "Q049dGVzdF94aHEsQz1jbg=="
                            }
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "plain"为原文信息,值为[BASE64]编码的字符串;
                        - "digestalg"为摘要算法，例如SM3;
                        - "certinfo"为证书信息;
                            - "dscert"为证书,值为[BASE64]编码的字符串;
                            - "notbefore"为证书开始生效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "notafter"为证书开始失效时间,格式为[yyyy-MM-dd HH:mm:ss];
                            - "issure"为颁发者,值为[BASE64]编码的字符串;
                            - "sn"为序列号;
                            - "subjectdn"为证书主题,值为[BASE64]编码的字符串;
                        - "version"为版本号;
    """,
    "KEY_DATA_STORE_CONFIDENTIALITY_API_INFO": """
        ## 数据加密rustful接口的描述如下:
        - **访问地址**: https://{IP}:15443/api/v1/cipher/json/encrypt
        - **请求方式**: POST
        - **数据格式**: JSON
        - **认证信息（调用认证接口获取）**:
        ```javascript
            Content-Type:application/json
            Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
        ```
        - **请求报文**:
            1. 报文内容
            ```json
                {
                    "keyCode":"1a268f0fe3bc4fdebfdd23e696c9e4e1",
                    "algorithmParam":"SM4/CBC/PKCS7Padding",
                    "data":{
                        "key1":"MTIzMzIx",
                    "key2":"Yzpj"
                    }
                }
            ```
            2. 参数说明如下:
                1. "keyCode"为要使用的密钥标识;
                2. "algorithmParam"为使用的密码算法,对称算法可选择:SM4/ECB/PKCS7Padding或SM4/CBC/PKCS7Padding,非对称算法可选择:SM2;
                3. "data"为需计算校验值的关键信息,其中key为明文字符串,value为[BASE64]编码字符串
        - **响应报文**:
            1. 报文内容
            ```json
                {
                    "code": "0",
                    "message": "success",
                    "data": {
                        "encData": {
                            "key1": "MG8CIQCIn6PVT0b+o3cijUWrYRKAZuK8XtN2KSTWp18d1X9VOgIgKR7VPDn7EryqJaby6sW9UPM7sEFHlXoBw9orsx81sboEIPUv52NYwUMv7tw3LcUuLKBdoajvShFRuWK6nof2hZphBAYeuDaRGbo=",
                            "key2": "MGwCIAkfEY4U0pgEh9I4ALgg/3GzTRiPjBbyHJ8KEH12H5cAAiEA8rSbHBV511qdoZHwnNQJ5LG6dZp9AsVRlJumtqEWO8AEIDwoQp6DIYlr6TITG+blM2bSliEtEw8lNv8PmeA8lLw/BAMRHr8="
                        },
                        "iv": ""
                    }
                }
            ```
            2. 参数说明如下:
                1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                2. "message"为返回的状态信息,其中返回"success"=调用成功;
                3. "data"节点的参数说明如下:
                    - "encData"为需计算校验值关键信息的加密结果,其中key为明文字符串,value为[BASE64]编码的密文字符串;
                    - "iv"为初始化向量;
        ## 数据解密rustful接口的描述如下:
        - **访问地址**: https://{IP}:15443/api/v1/cipher/json/decrypt
        - **请求方式**: POST
        - **数据格式**: JSON
        - **认证信息（调用认证接口获取）**:
        ```javascript
            Content-Type:application/json
            Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
        ```
        - **请求报文**:
            1. 报文内容
            ```json
                {
                    "keyCode":"1a268f0fe3bc4fdebfdd23e696c9e4e1",
                    "algorithmParam":"SM4/CBC/PKCS7Padding",
                    "iv":"",
                    "encData":{
                        "key1": "MG8CIQCIn6PVT0b+o3cijUWrYRKAZuK8XtN2KSTWp18d1X9VOgIgKR7VPDn7EryqJaby6sW9UPM7sEFHlXoBw9orsx81sboEIPUv52NYwUMv7tw3LcUuLKBdoajvShFRuWK6nof2hZphBAYeuDaRGbo=",
                        "key2": "MGwCIAkfEY4U0pgEh9I4ALgg/3GzTRiPjBbyHJ8KEH12H5cAAiEA8rSbHBV511qdoZHwnNQJ5LG6dZp9AsVRlJumtqEWO8AEIDwoQp6DIYlr6TITG+blM2bSliEtEw8lNv8PmeA8lLw/BAMRHr8="
                    }
                }
            ```
            2. 参数说明如下:
                1. "keyCode"为要使用的密钥标识;
                2. "algorithmParam"为使用的密码算法,对称算法可选择:SM4/ECB/PKCS7Padding或SM4/CBC/PKCS7Padding,非对称算法可选择:SM2;
                3. "iv"为初始化向量;
                4. "encData"为需计算校验值关键信息的加密数据,其中key为明文字符串,value为[BASE64]编码的密文字符串;
        - **响应报文**:
            1. 报文内容
            ```json
                {
                    "code": "0",
                    "message": "success",
                    "data": {
                        "key1": "MTIzMzIx",
                        "key2": "Yzpj"
                    }
                }
            ```
            2. 参数说明如下:
                1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                2. "message"为返回的状态信息,其中返回"success"=调用成功;
                3. "data"为需计算校验值关键信息的解密结果,其中key为明文字符串,value为[BASE64]编码字符串;
    """,
    "KEY_DATA_STORE_INTEGRITY_API_INFO": """
        ## 存储完整性计算HMAC的rustful接口的描述如下:
            - **访问地址**: https://{IP}:15443/api/v1/cipher/hmac
            - **请求方式**: POST
            - **数据格式**: JSON
            - **认证信息（调用认证接口获取）**:
            ```javascript
                Content-Type:application/json
                Authorization:Basic c2J5VGVzdF8xMjM6QWJjMTIzNDU2
            ```
            - **请求报文**:
                1. 报文内容
                ```json
                    {
                        "keyCode":"0ecc8a1adc224f16b7701888352ec30b",
                        "algorithmParam":"HMAC_SM3",
                        "data":"MTIzNDU="
                    }
                ```
                2. 参数说明如下:
                    1. "keyCode"为要使用的密钥标识;
                    2. "algorithmParam"为使用的密码算法,可选择的值为"HMAC_SM3";
                    3. "data"为需进行完整性保护的信息，值为[BASE64]编码的字符串
            - **响应报文**:
                1. 报文内容
                ```json
                    {
                        "code": "0",
                        "message": "success",
                        "data": {
                            "hmac": "E/zYUsUnqegLKzrlmMl3bw=="
                        }
                    }
                ```
                2. 参数说明如下:
                    1. "code"为返回的状态码,其中返回"0"=调用成功,返回其他数值=失败;
                    2. "message"为返回的状态信息,其中返回"success"=调用成功;
                    3. "data"节点的参数说明如下:
                        - "hmac"为使用"HMAC_SM3"算法进行完整性保护计算后的结果,值为[BASE64]编码的字符串;
    """
}

# 代码生成的提示词模版配置
CODE_GEN_PROMPT_TEMPLATES = {
    "AUTH_CODE_GENERATOR": """
        请参照《密码服务管理平台密评接入规范（简化版）》中"第三章 密码改造场景"下"3.1 身份鉴别"的内容,使用PNXClent控件完成身份鉴别改造。
    """,
    "ACCESS_CONTROL_CODE_GENERATOR": """
        <指令>\n

        作为一名密码技术专家,你需要按照<已知信息>中提供的重要数据、密码改造方案及API接口信息,为我提供一份完整的接口调用代码,用于验证"访问控制信息完整性"的正确性。代码的生成过程请按照以下要求进行:
        - 需要调用的API接口为<已知信息>中"访问控制信息完整性改造对应密码设备的API接口信息"章节中"访问控制数据完整性保护计算HMAC的rustful接口"给出的信息;
        - API接口信息中参数"algorithmParam"的值为<已知信息>内"访问控制信息完整性的密码改造方案"章节中"使用的密码算法"信息;
        - API接口信息中参数"data"的值为<已知信息>内"访问控制信息完整性的密码改造方案"章节中"需计算校验值的关键信息"信息做完base64编码后的值;
        - 在进行API接口调用时,要严格遵循<已知信息>中"重要数据存储完整性改造对应密码设备的API接口信息"章节中"访问控制数据完整性保护计算HMAC的rustful接口"给出的URL地址、请求方式、数据格式、认证信息及参数说明等信息;
        - 生成的代码要求为{language}语言代码,注释及其他文字要求使用中文,要简洁易懂,有完善的注释信息,并确保代码的健壮性,能够处理异常情况;

        </指令>\n
        <已知信息>\n

        # 访问控制信息完整性的重要数据
        {key_information}

        # 访问控制信息完整性的密码改造方案
        {crypto_eval_information}

        # 访问控制信息完整性改造对应密码设备的API接口信息
        {api_information}

        </已知信息>\n
    """,
    "KEY_DATA_TRANSPORT_CONFIDENTIALITY_AND_INTEGRITY_CODE_GENERATOR": """
        <指令>\n

        作为一名密码技术专家,你需要按照<已知信息>中提供的重要数据、密码改造方案及API接口信息,为我提供一份完整的接口调用代码,用于验证"重要数据传输机密性及完整性"的正确性。代码的生成过程请按照以下要求进行:
        - 首先需要判断<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据的保护方式"是否为"建立安全通道";
        - 如果为"建立安全通道",则无需再继续生成代码,只需返回以下内容:"已通过建立安全通道解决重要数据传输机密性及完整性问题,无需再调用密码设备接口",不得添加任何编造信息;
        - 如果不为"建立安全通道",则需要分别处理机密性及完整性的接口调用：
            1. 机密性接口调用：
                - 如果"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输机密性："下"数据传输的双方"为"应用与应用",则接口调用方式为：  
                    - 需调用的机密性接口说明为<已知信息>中"重要数据传输机密性及完整性改造对应密码设备的API接口信息"章节下"应用与应用间数据传输机密性保护"给出的信息;
                    - 调用API接口实现机密性校验的流程如下:
                        1. 要先调用"应用与应用间数据传输机密性保护"下"传输数据加密rustful接口"完成重要数据的加密；
                        2. 再将加密后的结果作为参数"data"的值调用"传输数据解密rustful接口"完成解密；
                        3. 最后对比解密后的结果与原始数据是否一致，完成机密性验证;
                    - API接口"传输数据加密rustful接口"信息中参数"data"的值需按照以下步骤获取：
                        1. 首先到<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输机密性："下"需要保护的重要数据"项，获取分类信息;
                        2. 再使用上一步获取的分类信息,到<已知信息>中"业务应用梳理后所有的重要数据"章节中获取对应的数据;
                        3. 在获取的数据中,每个分类下都包含多个数据项,每个数据项分别作为参数"data"的值调用一次API接口,即可完成对所有数据的加密;
                        4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
                - 如果"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输机密性："下"数据传输的双方"为"终端与应用",则接口调用方式为：
                    - 需调用的机密性接口说明为<已知信息>中"重要数据传输机密性及完整性改造对应密码设备的API接口信息"章节下"终端与应用间数据传输机密性保护"给出的信息;
                    - 调用API接口实现机密性校验的流程如下:
                        1. 要先调用"终端与应用间数据传输机密性保护"下"证书查询rustful接口"获取制作数字信封所需的证书信息;
                        2. 使用上一步获取的证书信息作为"certinfo"参数，调用"终端与应用间数据传输机密性保护"下"制作数字信封rustful接口"完成数字信封的制作;
                        2. 再将上一步制作好的数字信封作为参数"envelopdata"的值调用"终端与应用间数据传输机密性保护"下"解密数字信封rustful接口"完成解密；
                        3. 最后对比解密后的结果与原始数据是否一致，完成机密性验证;
                    - API接口"制作数字信封rustful接口"信息中参数"plain"的值需按照以下步骤获取：
                        1. 首先到<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输机密性："下"需要保护的重要数据"项，获取分类信息;
                        2. 再使用上一步获取的分类信息,到<已知信息>中"业务应用梳理后所有的重要数据"章节中获取对应的数据;
                        3. 在获取的数据中,每个分类下都包含多个数据项,每个数据项分别作为参数"plain"的值调用一次API接口,即可完成对所有数据的加密;
                        4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
            2. 完整性接口调用
                - 如果"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输完整性："下"数据传输的双方"为"应用与应用",则接口调用方式为：  
                    - 需调用的完整性接口说明为<已知信息>中"重要数据传输机密性及完整性改造对应密码设备的API接口信息"章节下"应用与应用间数据传输完整性保护"给出的信息;
                    - 调用API接口实现完整性校验的流程如下:
                        1. 要先调用"应用与应用间数据传输完整性保护"下"传输数据MAC计算的rustful接口"完成重要数据的MAC计算；
                        2. 再将计算后的MAC及IV结果，作为参数"mac"及参数"iv"的值，调用"传输数据MAC验证rustful接口"完成完整性验证；
                    - API接口"传输数据MAC计算的rustful接口"信息中参数"algorithmParam"的值,需要根据<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输完整性："下"重要数据的保护方式"项确定使用的算法;
                    - API接口"传输数据MAC计算的rustful接口"信息中参数"data"的值需按照以下步骤获取：
                        1. 首先到<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输完整性："下"需要保护的重要数据"项，获取分类信息;
                        2. 再使用上一步获取的分类信息,到<已知信息>中"业务应用梳理后所有的重要数据"章节中获取对应的数据;
                        3. 在获取的数据中,每个分类下都包含多个数据项,每个数据项分别作为参数"data"的值调用一次API接口,即可完成对所有数据的加密;
                        4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
                - 如果"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输完整性："下"数据传输的双方"为"终端与应用",则接口调用方式为：
                    - 需调用的完整性接口说明为<已知信息>中"重要数据传输机密性及完整性改造对应密码设备的API接口信息"章节下"终端与应用间数据传输完整性保护"给出的信息;
                    - 调用API接口实现完整性校验的流程如下:
                        1. 要先调用"终端与应用间数据传输完整性保护"下"终端与应用间传输数据所使用数字证书P7 Detach签名的rustful接口"完成重要数据的数字证书P7 Detach签名；
                        2. 再将数字证书P7 Detach签名结果的"signdata"值，作为参数"signdata"的值调用"终端与应用间传输数据所使用数字证书P7 Detach验签的rustful接口"完成完整性验证；
                    - API接口"终端与应用间传输数据所使用数字证书P7 Detach签名的rustful接口"信息中参数"certinfo"的值为用户要签名的数字证书标识;
                    - API接口"终端与应用间传输数据所使用数字证书P7 Detach签名的rustful接口"信息中参数"plain"的值需按照以下步骤获取：
                        1. 首先到<已知信息>内"重要数据传输机密性及完整性的密码改造方案"章节中"重要数据传输完整性："下"需要保护的重要数据"项，获取分类信息;
                        2. 再使用上一步获取的分类信息,到<已知信息>中"业务应用梳理后所有的重要数据"章节中获取对应的数据;
                        3. 在获取的数据中,每个分类下都包含多个数据项,每个数据项分别作为参数"plain"的值调用一次API接口,即可完成对所有数据的加密;
                        4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
        - 在进行API接口调用时,要严格遵循<已知信息>中"重要数据传输机密性及完整性改造对应密码设备的API接口信息"章节中各rustful接口给出的URL地址、请求方式、数据格式、认证信息及参数说明等信息;
        - 生成的代码要求为{language}语言代码,注释及其他文字要求使用中文,要简洁易懂,有完善的注释信息,并确保代码的健壮性,能够处理异常情况;

        </指令>\n
        <已知信息>\n

        # 业务应用梳理后所有的重要数据
        {key_information}

        # 重要数据传输机密性及完整性的密码改造方案
        {crypto_eval_information}

        # 重要数据传输机密性及完整性改造对应密码设备的API接口信息
        {api_information}

        </已知信息>\n
    """,
    "KEY_DATA_STORE_INTEGRITY_CODE_GENERATOR": """
        <指令>\n

        作为一名密码技术专家,你需要按照<已知信息>中提供的重要数据、密码改造方案及API接口信息,为我提供一份完整的接口调用代码,用于验证"重要数据存储完整性"的正确性。代码的生成过程请按照以下要求进行:
        - 需要调用的API接口为<已知信息>中"重要数据存储完整性改造对应密码设备的API接口信息"章节中"存储完整性计算HMAC的rustful接口"给出的信息;
        - API接口信息中参数"algorithmParam"的值为<已知信息>内"重要数据存储完整性的密码改造方案"章节中"使用的密码算法"信息;
        - API接口信息中参数"data"的值需按照以下步骤获取：
            1. 首先到<已知信息>内"重要数据存储完整性的密码改造方案"章节中"需计算校验值的关键信息"项，获取分类信息;
            2. 再使用上一步获取的分类信息,到<已知信息>中"重要数据存储完整性的重要数据"章节中获取对应的数据;
            3. 在获取的数据中,每个分类下都包含多个数据项,每个数据项分别作为参数"data"的值调用一次API接口,即可完成对所有数据的完整性保护;
            4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
        - 在进行API接口调用时,要严格遵循<已知信息>中"重要数据存储完整性改造对应密码设备的API接口信息"章节中"存储完整性计算HMAC的rustful接口"给出的URL地址、请求方式、数据格式、认证信息及参数说明等信息;
        - 生成的代码要求为{language}语言代码,注释及其他文字要求使用中文,要简洁易懂,有完善的注释信息,并确保代码的健壮性,能够处理异常情况;

        </指令>\n
        <已知信息>\n

        # 重要数据存储完整性的重要数据
        {key_information}

        # 重要数据存储完整性的密码改造方案
        {crypto_eval_information}

        # 重要数据存储完整性改造对应密码设备的API接口信息
        {api_information}

        </已知信息>\n
    """,
    "KEY_DATA_STORE_CONFIDENTIALITY_CODE_GENERATOR": """
        <指令>\n

        作为一名密码技术专家,你需要按照<已知信息>中提供的重要数据、密码改造方案及API接口信息,为我提供一份完整的接口调用代码,用于验证"重要数据存储机密性"的正确性。代码的生成过程请按照以下要求进行:
        - 需要调用的API接口为<已知信息>中"重要数据存储机密性改造对应密码设备的API接口信息"章节中"数据加密rustful接口"及"数据解密rustful接口"给出的信息;
        - 在调用API接口时，要先调用"数据加密rustful接口"完成重要数据的加密，再将加密后的结果作为参数"data"的值调用"数据解密rustful接口"完成解密，最后对比解密后的结果与原始数据是否一致，完成机密性验证;
        - API接口"数据加密rustful接口"及"数据解密rustful接口"中参数"algorithmParam"的值需与为<已知信息>内"重要数据存储机密性的密码改造方案"章节中"使用的密码算法"信息进行对应;
        - API接口"数据加密rustful接口"信息中参数"encData"的值需按照以下步骤获取：
            1. 首先到<已知信息>内"重要数据存储机密性的密码改造方案"章节中"需计算校验值的关键信息"项，获取分类信息;
            2. 再使用上一步获取的分类信息,到<已知信息>中"重要数据存储机密性的重要数据"章节中获取对应的数据;
            3. 在获取的数据中,每个分类下都包含多个数据项,需要将所有的数据项一次性整理为JSON格式的字符串，其中数据项作为key值，value值可使用"XXXXXX"代替;
            4. 上一步形成的JSON格式字符串作为参数"encData"的值调用API接口,即可完成对数据的机密性保护;
            4. 其中分类数据的概念不需要在代码中体现,只需要体现通过分类获取的数据项即可;
        - 在进行API接口调用时,要严格遵循<已知信息>中"重要数据存储机密性改造对应密码设备的API接口信息"章节中"数据加密rustful接口"及"数据解密rustful接口"给出的URL地址、请求方式、数据格式、认证信息及参数说明等信息;
        - 生成的代码要求为{language}语言代码,注释及其他文字要求使用中文,要简洁易懂,有完善的注释信息,并确保代码的健壮性,能够处理异常情况;

        </指令>\n
        <已知信息>\n

        # 重要数据存储机密性的重要数据
        {key_information}

        # 重要数据存储机密性的密码改造方案
        {crypto_eval_information}

        # 重要数据存储机密性改造对应密码设备的API接口信息
        {api_information}

        </已知信息>\n
    """,
}